package java_learn.java_jinjie.GenericClass;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 泛型的上限限定 ? extends E 代表使用的泛型只能是E类型的子类/本身
 * 泛型的下限限定 ? super E  代表使用的泛型只能是E类型的父类/本身
 */
public class DemoGeneric03 {
    public static void getElement1(Collection<? extends Number> coll) {
    } // 泛型的下限:此时的泛型?，必须是Number类型或者Number类型的父类

    public static void getElement2(Collection<? super Number> coll) {
    }

    public static void main(String[] args) {
        Collection<Integer> list1 = new ArrayList<Integer>();
        Collection<String> list2 = new ArrayList<String>();
        Collection<Number> list3 = new ArrayList<Number>();
        Collection<Object> list4 = new ArrayList<Object>();
        getElement1(list1);
//        getElement1(list2);//报错 getElement(list3); getElement(list4);//报错
//        getElement2(list1);//报错 getElement2(list2);//报错 getElement2(list3); getElement2(list4);

    }
}
